package com.yyge.util;

import org.springframework.stereotype.Component;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

/**
 * 反射工具类
 */

@Component
public class FieldUtil {
    /**
     * 获取一个类中所有不为空的属性名称
     * @param obj
     * @return
     */
    public List<Field> getFieldNames(Object obj) {
        List<Field> fieldNames = new ArrayList<>();

        // 获取类的所有字段
        Field[] fields = obj.getClass().getDeclaredFields();
        for (Field field : fields) {
            try {
                // 设置访问权限，可以访问私有字段
                field.setAccessible(true);
                // 判断字段值是否为空
                if (field.get(obj) != null) {
                    fieldNames.add(field);  // 将不为空的属性名称添加到列表中
                }
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return fieldNames;
    }
}
